// 单例模式
// var Singleton=function(name){
//     this.name=name;
// }

// Singleton.prototype.getName=function(){
//     console.log(this.name);
// }

// Singleton.getInstance=(function(){
//     var instance=null;
//     return function(name){
//         if(!instance){
//             console.log(11111111)
//             instance=new Singleton(name);
//         }
//         return instance;
//     }
// })();

// 惰性单例
// Singleton.getInstance=(function(){
//     var instance=null;
//     return function(name){
//         if(!instance){
//             instance=new Singleton(name);
//         }
//         return instance;
//     }
// })()

// var a=Singleton.getInstance("hello");
// var b=Singleton.getInstance("hello2");
// a.getName();
// b.getName();



var getSingle=function(fn){
    var result;
    return function(){
        result=fn.apply(null,arguments);
        console.log("result",result)
        return result;
    }
}

// var createLoginLayer = function(){
//     var div = function(){
//         console.log(11111)
//     }
//     return div;
// };
// var createSingleLoginLayer = getSingle( createLoginLayer );
// createSingleLoginLayer()


function aa(){
    var div = function(){
        console.log(11111)
    }
    return div;
}


function bb(fn){
    var _res;
    return function(){
        _res=fn.apply(this,arguments);
        console.log(_res);
        return _res
    }
}

bb(aa)();